<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>vue</title>
  <script src="./js/vue.js"></script>
</head>

<body>
  <div id="app">
    <ul>
      <!-- 
        循环:vue模板语法中对于 for of语法进行了增强，原生js中 for of是不可以对于对象进行迭代
        语法: 
          数组 v-for="(item,index) in/of 数组"
          对象 v-for="(item,key,index) in/of 对象"
        注：
          ①、vue2.x中 小括号可以不写,但是在vue3.x中一定要写

          ②、在vue2.x中如果v-for和v-if写在同一个元素中，它的优先级是  v-for高于v-if,在vue中如果有条件判断则一定不要让它两者写在同一个元素中，可以把v-if写在伪元素中 <template v-if></template>,此标签在vue解析时不会生成对于的html显示标签，来影响视图。

          ③、在vue3.x中中如果v-for和v-if写在同一个元素中，它的优先级是，v-if高于v-for，所以可以写在同一个元素中
          
          ④、使用v-for时，请一定要给它所循环的元素的顶级添加一个key值，来提升dom比对的效率，key值一定要是不重复唯一值，（注：最好不要用循环中的index索引当作key值，因为如果列表中有对于数组进行删除操作，此时索引就会发生变化，从而存在索引塌陷问题）
      -->

      <li v-for="item,index of arr" :key="item.id">{{item.name}}</li>
    </ul>

    <hr>
    <ul>
      <!-- 在vue2中不推荐此写法，效率低 v-for和v-if的优先级的问题 -->
      <!-- <li v-for="item,index of arr" :key="item.id" v-if="age>18">{{item.name}}</li> -->
      <template v-if="age>18">
        <li v-for="item,index of arr" :key="item.id">{{item.name}}</li>
      </template>
    </ul>

    <hr>
    <!-- v-for在vue模板进行了增强，对于 in/of都能对于对象进行循环 -->
    <div v-for="(val,key,index) of user" :key="key">
      {{key}} == {{val}}
    </div>
  </div>

  <script>
    new Vue({
      el: '#app',
      data: {
        age: 28,
        arr: [
          { id: 1, name: '张三', age: 11 },
          { id: 2, name: '李四', age: 21 }
        ],
        user: {
          id: 100,
          name: '赵六',
          age: 20
        }
      }
    })
  </script>
</body>

</html>